package mundo;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

public class Principal
{
	private static String[] lol = new String[8];

	public static void main(String[] args)
	{
		new Principal();
		generarTablaYEcuaciones();
	}

	public Principal() {
		for (int i = 0; i < lol.length; i++) {
			lol[i]="";
		}
	}

	public static void generarTablaYEcuaciones() {
		File carpeta = new File( "./data" );
		if( !carpeta.exists( ) )
			carpeta.mkdirs( );

		File archivoExcel = new File( carpeta, "TablaDeVerdad.csv" );
		File archivoTexto = new File( carpeta, "SumaDeMinterminos.Txt" );
		try 
		{
			PrintWriter outExcel= new PrintWriter(archivoExcel);
			outExcel.println("Numero;b6;b5;b4;b3;b2;b1;b0;R1;R2;R3;R4;r1;r2;r3;r4");				
			for (int i = 0; i < 100; i++) {
				String linea="";
				try {
					String numBinario = SistemasNumericos.decimalABaseR(i, 2);
					int cerosFaltantes=(7-numBinario.length());
					for (int j = 0; j < cerosFaltantes; j++) {
						numBinario="0"+numBinario;
					}
					String numBCD = SistemasNumericos.decimal_BCD(i);
					cerosFaltantes=(8-numBCD.length());
					for (int j = 0; j < cerosFaltantes; j++) {
						numBCD="0"+numBCD;
					}
					linea=numBinario+numBCD;
				} catch (Exception e) {
					e.printStackTrace();
				}
				char[] valores = linea.toCharArray();
				for (int j = 0; j < valores.length; j++) {
					if(j==0)
					{
						outExcel.print(i+";"+valores[j]+"");				
					}
					else{
						if(j>=7&&valores[j]=='1')
						{
							lol[j-7]+=(lol[j-7].isEmpty())?(i):(","+i);
						}
						outExcel.print(";"+valores[j]);
					}
				}
				outExcel.println();
			}
			outExcel.close();
			
			PrintWriter outTxt= new PrintWriter(archivoTexto);
			int tamanio=lol.length;
			for (int i = 0; i < tamanio; i++) {
				String actual = lol[i];
				String digito=(i<4)?"R":"r";
				digito+=((i%4)+1);
				outTxt.print("F"+digito+"(b6,b5,b4,b3,b2,b1,b0) = SUMATORIA("+actual+")");
				if(i<(tamanio-1))
				{
					outTxt.println();
				}
			}
			outTxt.close();
		}
		catch (IOException  e)
		{
			e.printStackTrace();
		}
	}
}
